跳到主要内容

Vue 2:Vue.component

本文用于 Vue 2 项目。Vue 3 对应 app.component(),见 createApp。

注册与读取​

import Vue from 'vue';
import MyButton from './MyButton.vue';

Vue.component('my-button', MyButton);
const ButtonConstructor = Vue.component('my-button');

也可传入组件选项对象:

Vue.component('my-button', {
template: '<button @click="$emit(\'click\')">提交</button>'
});

注册后,新建组件的模板可使用 <my-button />。只供某个父组件使用时,优先局部注册:components: { MyButton }。

与 Vue.extend 的关系​

Vue.extend(options) 创建组件子类构造器;Vue.component(name, definition) 将组件与名称关联。传入普通选项对象时,Vue.component 内部会转换为构造器;也可直接传入已有构造器。

const Message = Vue.extend({ props: ['text'], template: '<p>{{ text }}</p>' });
Vue.component('v-message', Message);

Message / Toast 的程序化创建、挂载与销毁流程见 Vue.extend。